package cn.jiedh.app.meiweidk.Utils.tool;


import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


/**
 * 字符串工具
 */
public class StringUtil {
	/**
	 * 获得32位唯一ID
	 *
	 * @return
	 */
	public static String getUUID() {
		return UUID.randomUUID().toString().replaceAll("-", "");
	}

	/**
	 * 判断字符串是否为空
	 *
	 * @param value
	 * @return
	 */
	public static boolean isEmpty(String value) {
		if (value == null || value.trim().length() == 0) {
			return true;
		}
		return false;
	}

	/**
	 * 获得字符串长度<br />
	 * 中文长度为3，其他长度1
	 *
	 * @param value
	 * @return
	 */
	public static int strLen(String value) {
		if (isEmpty(value)) {
			return 0;
		}
		int len = 0;
		String chinese = "[\u0391-\uFFE5]";
		for (int i = 0; i < value.length(); i++) {
			String str = value.substring(i, i + 1);
			if (str.matches(chinese)) {
				len += 3;
			} else {
				len += 1;
			}
		}
		return len;
	}

	/**
	 * 字符串转Integer
	 *
	 * @param value
	 * @return
	 */
	public static Integer strToInt(String value) {
		try {
			return Integer.parseInt(value);
		} catch (Exception e) {
		}
		return null;
	}

	/**
	 * 字符串转Long
	 *
	 * @param value
	 * @return
	 */
	public static Long strToLong(String value) {
		try {
			return Long.parseLong(value);
		} catch (Exception e) {
		}
		return null;
	}

	/**
	 * 判断手机号格式
	 *
	 * @param mobiles
	 * @return
	 */
	public static boolean isMobileNO(String mobiles) {
		Pattern p = Pattern.compile("^((17[0-9])|(13[0-9])|(15[0-9])|(18[0-9]))|(19[0-9])\\d{8}$");
		Matcher m = p.matcher(mobiles);
		return m.matches();
	}

	/**
	 * 判断密码格式
	 *
	 * @param //email
	 */
	public static boolean isPassword(String password) {
		// Pattern p = Pattern.compile("(?!^\\d+$)(?!^[a-zA-Z]+$)(?!^[_#@]+$).{6,20}");
		Pattern p = Pattern.compile("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,18}$");
		Matcher pm = p.matcher(password);
		if (pm.matches()) {
			return true;
		}
		return false;
	}

	/**
	 * 获得字符串编码格式<br />
	 * 编码格式可为utf-8|iso-8859-1
	 *
	 * @param value
	 * @return
	 */
//	public static Charset getEncode(String value) {
//		if(isEmpty(value)){
//			return null;
//		}
//		if(value.matches("^[\u0000-\u0080]+$")){
//			return Charset.UTF8;
//		}
//		Charset encode = Charset.ISO8859;
//		try {
//			if(value.equals(new String(value.getBytes(encode.getCharset()), encode.getCharset()))){
//				return encode;
//			}
//		} catch (Exception e) {
//		}
//		encode = Charset.UTF8;
//		try {
//			if(value.equals(new String(value.getBytes(encode.getCharset()), encode.getCharset()))){
//				return encode;
//			}
//		} catch (Exception e) {
//		}
//		return null;
//	}

	/**
	 * 识别字符串编码并重新编码成utf-8格式<br />
	 * 原编码格式可为utf-8|iso-8859-1
	 *
	 * @param value
	 * @return
	 */
//	public static String encodeToUtf8(String value) {
//		try {
//			Charset encode = getEncode(value);
//			if(encode!=null && !Charset.UTF8.getCharset().equals(encode.getCharset())){
//				value = new String(value.getBytes(encode.getCharset()), Charset.UTF8.getCharset());
//				return value;
//			}
//		} catch (Exception e) {
//		}
//		return value;
//	}

	/**
	 * URL编码
	 *
	 * @param url
	 * @return
	 */
//	public static String urlEncode(String url) {
//		try {
//			return URLEncoder.encode(url, Charset.UTF8.getCharset());
//		} catch (Exception e) {
//			return null;
//		}
//	}

	/**
	 * byte数组转字符串
	 *
	 * @param value
	 * @return
	 */
//	public static String byteToStr(byte[] value) {
//		try {
//			return new String(value, Charset.UTF8.getCharset());
//		} catch (Exception e) {
//			return null;
//		}
//	}

	/**
	 * 字符串转byte数组
	 *
	 * @param value
	 * @return
	 */
	public static byte[] strToByte(String value) {
		try {
			return value.getBytes("UTF-8");
		} catch (Exception e) {
			return null;
		}
	}

}